frame: Fix horizontal size request
authorTimm Bäder <mail@baedert.org>
Fri, 26 Feb 2016 13:07:49 +0000 (14:07 +0100)
committerTimm Bäder <mail@baedert.org>
Mon, 29 Feb 2016 13:19:38 +0000 (14:19 +0100)
We were adding the border gadget size and the label widget size in any
case, but when calculating the width, we want the maximum of those two,
not the sum.

https://bugzilla.gnome.org/show_bug.cgi?id=760482

gtk/gtkframe.c

index 3fcb6417fd973dbb698e9ebd666d796dc481ed83..56fb8c9597d6c464d9a5206846cedecd5ec6e077 100644 (file)
@@ -938,13 +938,23 @@ gtk_frame_measure (GtkCssGadget   *gadget,
   frame = GTK_FRAME (widget);
   priv = frame->priv;
 
+  gtk_css_gadget_get_preferred_size (priv->border_gadget,
+                                     orientation,
+                                     for_size,
+                                     &child_min,
+                                     &child_nat,
+                                     NULL, NULL);
+
+  *minimum = child_min;
+  *natural = child_nat;
+
   if (priv->label_widget && gtk_widget_get_visible (priv->label_widget))
     {
       if (orientation == GTK_ORIENTATION_HORIZONTAL)
         {
           gtk_widget_get_preferred_width (priv->label_widget, &child_min, &child_nat);
-          *minimum = child_min;
-          *natural = child_nat;
+          *minimum = MAX (child_min, *minimum);
+          *natural = MAX (child_nat, *natural);
         }
       else
         {
@@ -954,25 +964,10 @@ gtk_frame_measure (GtkCssGadget   *gadget,
           else
             gtk_widget_get_preferred_height (priv->label_widget, &child_min, &child_nat);
 
-          *minimum = child_min;
-          *natural = child_nat;
+          *minimum += child_min;
+          *natural += child_nat;
         }
     }
-  else
-    {
-      *minimum = 0;
-      *natural = 0;
-    }
-
-  gtk_css_gadget_get_preferred_size (priv->border_gadget,
-                                     orientation,
-                                     for_size,
-                                     &child_min,
-                                     &child_nat,
-                                     NULL, NULL);
-
-  *minimum += child_min;
-  *natural += child_nat;
 }
 
 static void